package Utils;

import com.sun.org.apache.bcel.internal.generic.SWAP;

public class StringUtil 
{
	public static final int MENOR = -1;
	public static final int IGUAL = 0;
	public static final int MAYOR = 1;

	/**
	 * 
	 * @param s1
	 * @param s2
	 * @return -1 si: s1 <  s2
	 *     <br> 0 si: s1 == s2
	 *     <br> 1 si: s1 >  s2
	 *     <br>NOTA: "acb" == "abc"
	 *     <br>"a" < "a012"  
	 *     <br>"a200" > "a90"
	 */
	public static int compare(String s1,String s2)
	{
		byte[] bytes1 = s1.getBytes();
		byte[] bytes2 = s2.getBytes();
		
		int longitud1 = bytes1.length;
		int longitud2 = bytes2.length;

		int minimosDeCaracteres = (longitud1 < longitud2 ? longitud1 : longitud2 ); 
		
		//Aqui ya se que longitud(bytesS1) <= longitud(S2)
		byte b1=0,b2=0;
		for (int i=0; i < minimosDeCaracteres; i++)
		{
			b1 = bytes1[i];
			b2 = bytes2[i];
			
			if( b1 > b2 ) 
			{
				if( !esNumero(b1) || !esNumero(b2) )
					return MAYOR;
				else if( longitud1 < longitud2)
					return MENOR;
				else if( longitud1 >= longitud2)
					return MAYOR;
			}
			else if( b1 < b2 )
			{
				if( !esNumero(b1) || !esNumero(b2) )
					return MENOR;
				else
				{
					if( longitud1 > longitud2 ) // si b1 y b2 son numeros
						return MAYOR;
					else if (longitud1 == longitud2)
						return MENOR;
				}
					
			}
				
		}
		
		if( longitud1 == longitud2 )
		{
			return 0;
		}
		else if( longitud1 > longitud2)
		{
			return 1;
		}
		else
		{
			return -1;
		}
	}
	
	private static boolean esNumero(byte b)
	{	//UNICODE
		return (48 <= b && b <= 57);
	}
}
